package com.ww.learn.channel

import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

/**
 * 一个Channel是一个和BlockingQueue非常相似的概念。其中一个不同是它代替了阻塞的put操作并提供了挂起的send，
 * 还替代了阻塞的take操作并提供了挂起的receive。
 */
fun main() = runBlocking {
    val channel = Channel<Int>()
    launch {
        for (x in 1..5) { channel.send(x * x)}
    }
    repeat(5) { println(channel.receive()) }
    println("Done!")
}